paddr_t table_base)
{
struct msi_info msi_info = {
- .seg = pdev->seg,
- .bus = pdev->bus,
- .devfn = pdev->devfn,
+ .sbdf = pdev->sbdf,
.table_base = table_base,
.entry_nr = nr,
};
#define FIX_MSIX_MAX_PAGES 512
struct msi_info {
- u16 seg;
- u8 bus;
- u8 devfn;
+ pci_sbdf_t sbdf;
int irq;
int entry_nr;
uint64_t table_base;
if ( !cpu_has_apic )
goto done;
- pdev = pci_get_pdev(d, PCI_SBDF(msi->seg, msi->bus, msi->devfn));
+ pdev = pci_get_pdev(d, msi->sbdf);
if ( !pdev )
goto done;
struct msi_desc *old_desc;
ASSERT(pcidevs_locked());
- pdev = pci_get_pdev(NULL, PCI_SBDF(msi->seg, msi->bus, msi->devfn));
+ pdev = pci_get_pdev(NULL, msi->sbdf);
if ( !pdev )
return -ENODEV;
struct msi_desc *old_desc;
ASSERT(pcidevs_locked());
- pdev = pci_get_pdev(NULL, PCI_SBDF(msi->seg, msi->bus, msi->devfn));
+ pdev = pci_get_pdev(NULL, msi->sbdf);
if ( !pdev || !pdev->msix )
return -ENODEV;
{
case MAP_PIRQ_TYPE_MSI_SEG:
map.type = MAP_PIRQ_TYPE_MSI;
- msi.seg = map.bus >> 16;
+ msi.sbdf.seg = map.bus >> 16;
break;
case MAP_PIRQ_TYPE_MULTI_MSI:
if ( map.table_base )
return -EINVAL;
- msi.seg = map.bus >> 16;
+ msi.sbdf.seg = map.bus >> 16;
break;
default:
- msi.seg = 0;
+ msi.sbdf.seg = 0;
break;
}
- msi.bus = map.bus;
- msi.devfn = map.devfn;
+ msi.sbdf.bus = map.bus;
+ msi.sbdf.devfn = map.devfn;
msi.entry_nr = map.entry_nr;
msi.table_base = map.table_base;
ret = physdev_map_pirq(map.domid, map.type, &map.index, &map.pirq,
if ( uart->msi )
{
struct msi_info msi = {
- .bus = uart->ps_bdf[0],
- .devfn = PCI_DEVFN(uart->ps_bdf[1], uart->ps_bdf[2]),
+ .sbdf = PCI_SBDF(0, uart->ps_bdf[0], uart->ps_bdf[1],
+ uart->ps_bdf[2]),
.irq = rc = uart->irq,
.entry_nr = 1
};
{
#ifdef CONFIG_HAS_PCI_MSI
const struct msi_info *msi = data;
- uint32_t machine_bdf = (msi->seg << 16) | (msi->bus << 8) | msi->devfn;
+ uint32_t machine_bdf = msi->sbdf.sbdf;
AVC_AUDIT_DATA_INIT(ad, DEV);
ad->device = machine_bdf;